﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Permissions;
using System.Collections;
using System.Linq;

using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;


namespace ENLibraryClass
{

    public class ENEmpleados
    {
        //CAD de acceso a la BD
        private CADLibraryClass.EmpleadosCAD cadEmpleados;


        //DECLARACION DE ATRIBUTOS
        private int id;
        private string dni;
        private string nombre;
        private string apellido1;
        private string apellido2;
        private string telefono;
        private string email;
        private string direccion;
        private string poblacion;
        private string provincia;
        private string codigoPostal;
        private string cargo;
        private string sueldo;
        private DateTime fechAlta;
        private string login;
        private string password;


        //CONSTRUCTOR DEFECTO
        public ENEmpleados()
        {
            id = 0;
            dni = "";
            nombre = "";
            apellido1 = "";
            apellido2 = "";
            telefono = "";
            email = "";
            direccion = "";
            poblacion = "";
            provincia = "";
            codigoPostal = "";
            cargo = "";
            sueldo = "";
            fechAlta = DateTime.Parse("01/01/1900");
            login = "";
            password = "";

            cadEmpleados = new CADLibraryClass.EmpleadosCAD();
        }


        //CONSTRUCTOR PARAMETROS
        public ENEmpleados(int pid, string pdni, string pnombre, string papellido1, string papellido2, string ptelefono, string pemail, string pdireccion, string ppoblacion, string pprovincia, string pcodigoPostal, string pcargo, string psueldo, DateTime pfechAlta, string plogin, string ppassword)
        {
            id = pid;
            dni = pdni;
            nombre = pnombre;
            apellido1 = papellido1;
            apellido2 = papellido2;
            telefono = ptelefono;
            email = pemail;
            direccion = pdireccion;
            poblacion = ppoblacion;
            provincia = pprovincia;
            codigoPostal = pcodigoPostal;
            cargo = pcargo;
            sueldo = psueldo;
            fechAlta = pfechAlta;
            login = plogin;
            password = ppassword;


            cadEmpleados = new CADLibraryClass.EmpleadosCAD();
        }


        //PROPIEDADES
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public string Dni
        {
            get { return dni; }
            set { dni = value; }
        }

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public string Apellido1
        {
            get { return apellido1; }
            set { apellido1 = value; }
        }

        public string Apellido2
        {
            get { return apellido2; }
            set { apellido2 = value; }
        }

        public string Direccion
        {
            get { return direccion; }
            set { direccion = value; }
        }

        public string Poblacion
        {
            get { return poblacion; }
            set { poblacion = value; }
        }

        public string Provincia
        {
            get { return provincia; }
            set { provincia = value; }
        }

        public string Telefono
        {
            get { return telefono; }
            set { telefono = value; }
        }

        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        public string CodigoPostal
        {
            get { return codigoPostal; }
            set { codigoPostal = value; }
        }

        public DateTime FechAlta
        {
            get { return fechAlta; }
            set { fechAlta = value; }
        }

        public string Cargo
        {
            get { return cargo; }
            set { cargo = value; }
        }

        public string Sueldo
        {
            get { return sueldo; }
            set { sueldo = value; }
        }

        public string Login
        {
            get { return login; }
            set { login = value; }
        }

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        //METODOS CRUD
        public bool AltaEmpleado()
        {
            try
            {
                bool nuevo = false;

                nuevo = cadEmpleados.AltaEmpleado(id, dni, nombre, apellido1, apellido2, telefono, email, direccion, poblacion, provincia, codigoPostal, cargo, sueldo, fechAlta, login, password);

                return nuevo;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public DataTable BuscarEmpleados()
        {
            try
            {
                return cadEmpleados.BuscarEmpleados();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable BuscarEmpleados2()
        {
            try
            {
                return cadEmpleados.BuscarEmpleados2();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable BuscarEmpleadosPor()
        {
            try
            {
                return cadEmpleados.BuscarEmpleados(id, dni, nombre, apellido1, apellido2, telefono, email, direccion, poblacion, provincia, codigoPostal, cargo, sueldo, fechAlta, login, password);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public bool ModificarEmpleado()
        {
            try
            {
                bool modificado = false;

                modificado = cadEmpleados.ModificarEmpleado(id, dni, nombre, apellido1, apellido2, telefono, email, direccion, poblacion, provincia, codigoPostal, cargo, sueldo, fechAlta, login, password);

                return modificado;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        public bool BorrarEmpleado()
        {
            try
            {
                return cadEmpleados.BorrarEmpleado(id);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}